package com.seek.model.dto;

import java.util.List;

/**
 * 分页组件
 * 
 * <ul>
 * <li>
 * <b>修改历史：</b><br/>
 * <p>
 * [2015-9-25下午2:57:41]涂小炼<br/>
 * 新建
 * </p>
 * </li>
 * </ul>
 */
@SuppressWarnings({"rawtypes"})
public class PageBean {

	private List list;// 要返回的某一页的记录列表

	private int allRow; // 总记录数
	private int totalPage;// 总页数
	private int currentPage;// 当前页
	private int pageSize;// 每页记录数
	
	private int page;
	private int rows;
	
	

	public int getPage() {
		return page;
	}

	public void setPage(int page) {
		this.currentPage = page;
		this.page = page;
	}

	public int getRows() {
		return rows;
	}

	public void setRows(int rows) {
		this.pageSize = rows;
		this.rows = rows;
	}

	@SuppressWarnings("unused")
	private boolean isFirstPage;// 是否为第一页
	@SuppressWarnings("unused")
	private boolean isLastPage;// 是否为最后一页
	@SuppressWarnings("unused")
	private boolean hasPreviousPage;// 是否有前一页
	@SuppressWarnings("unused")
	private boolean hasNextPage;// 是否有下一页
	
	public List getList() {
		return list;
	}

	public void setList(List list) {
		this.list = list;
	}

	public int getAllRow() {
		return allRow;
	}

	public void setAllRow(int allRow) {
		this.allRow = allRow;
	}

	public int getTotalPage() {
		return totalPage;
	}

	public void setTotalPage(int totalPage) {
		this.totalPage = totalPage;
	}

	public int getCurrentPage() {
		return currentPage == 0 ? 1 : currentPage;
	}

	public void setCurrentPage(int currentPage) {
		this.currentPage = currentPage;
	}

	public int getPageSize() {
		return pageSize == 0 ? 20 :pageSize;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	/**
	 * 
	 * init:初始化分页信息
	 * 
	 * 
	 * 
	 * 
	 */
	public void init() {
		this.isFirstPage = isFirstPage();
		this.isLastPage = isLastPage();
		this.hasPreviousPage = isHasPreviousPage();
		this.hasNextPage = isHasNextPage();
	}

	/**
	 * 
	 * isFirstPage:判断是否是第1页
	 * 
	 * @return boolean
	 * 
	 * 
	 */

	public boolean isFirstPage() {
		return currentPage == 1;// 如是当前页是第1页
	}

	/**
	 * 
	 * isLastPage:判断是否是最后一页
	 * 
	 * @return boolean
	 * 
	 * 
	 */
	public boolean isLastPage() {
		return currentPage == totalPage;// 如果当前页是最后一页
	}

	/**
	 * 
	 * isHasPreviousPage:判断是否还有上一页
	 * 
	 * @return boolean
	 * 
	 * 
	 */
	public boolean isHasPreviousPage() {
		return currentPage != 1;// 只要当前页不是第1页
	}

	/**
	 * 
	 * isHasNextPage:判断是否还有下一页
	 * 
	 * @return boolean
	 * 
	 * 
	 */
	public boolean isHasNextPage() {
		return currentPage != totalPage;// 只要当前页不是最后1页
	}

	/**
	 * 
	 * countTotalPage:计算总页数,静态方法,供外部直接通过类名调用
	 * 
	 * @param pageSize
	 *            每页记录数
	 * @param allRow
	 *            总记录数
	 * @return int 总页数
	 * 
	 * 
	 */
	public static int countTotalPage(final int pageSize, final int allRow) {
		return (allRow - 1)/pageSize + 1;
		
	}

	/**
	 * 
	 * countOffset:计算当前页开始记录
	 * 
	 * @param pageSize
	 *            每页记录数
	 * @param currentPage
	 *            当前第几页
	 * @return int 当前页开始记录号
	 * 
	 */
	public static int countOffset(final int pageSize, final int currentPage) {
		final int offset = pageSize * (currentPage - 1);
		return offset;
	}

	/**
	 * 
	 * countCurrentPage:计算当前页,若为0或者请求的URL中没有"?page=",则用1代替
	 * 
	 * @param page
	 *            传入的参数(可能为空,即0,则返回1)
	 * @return int 当前页
	 * 
	 * 
	 */
	public static int countCurrentPage(int page) {
		return page == 0 ? 1 : page;
	}
}